package com.yuandian.management.service;

import com.yuandian.api.management.po.OptionParams;
import com.yuandian.api.management.vo.OptionVo;
import com.yuandian.bpm.common.core.util.R;
import com.yuandian.management.vo.BusinessServerResourceParams;

import java.util.List;
import java.util.Map;

/**
 * 说明：选项service接口
 * @Author zfsn
 * @Date 2023/2/6 11:48
 */
public interface IOptionService {

	/**
	 * 查询系统选项
	 * @param params 选项请求参数
	 * @return 选项集
	 */
	List<OptionVo> system(OptionParams params);

	/**
	 * 查询业务选项
	 * @param params 选项请求参数
	 * @return 选项集
	 */
	List<OptionVo> business(OptionParams params);

	/**
	 * 查询步骤选项
	 * @param params 选项请求参数
	 * @return 统一响应
	 */
	List<OptionVo> step(OptionParams params);


	/**
	 * 查询网端选项
	 * @param params 选项请求参数
	 * @return 统一响应
	 */
	List<OptionVo> segment(OptionParams params);


	/**
	 * 告警配置管理-告警模板配置-模板类型
	 * @return 统一响应
	 */
	List<OptionVo> templateType();


	/**
	 * 告警配置管理-告警模板配置-指标单位
	 * @return 统一响应
	 */
	List<OptionVo> indicatorsType();


	/**
	 * 告警配置管理-告警模板配置-告警对象
	 * @return 统一响应
	 */
	List<OptionVo> indicatorsObject();


	/**
	 * 告警配置管理-告警模板配置-颗粒度
	 * @return 统一响应
	 */
	List<OptionVo> indicatorsParticle();

	/**
	 *	告警级别
	 * @return 统一响应
	 */
	List<OptionVo> alarmLevel();


	/**
	 *	告警模板
	 * @return 统一响应
	 */
	List<Map<String, Object>> alarmTemplate(Integer type);

	/**
	 *	告警指标
	 * @return 统一响应
	 * @param type
	 * @param category
	 */
	List<OptionVo> alarmIndicators(Integer type, String category);

	/**
	 *	查询菜单映射关系
	 * @return 统一响应
	 */
	List<OptionVo> getButtonMap();


	/**
	 *	查询城市地市(区域)
	 * @return 统一响应
	 * @param province
	 */
	List<OptionVo> getCityArea(String province);

	/**
	 *	查询省份
	 * @return 统一响应
	 */
	List<OptionVo> province();

	/**
	 *	查询告警类型
	 * @return 统一响应
	 * @param category
	 */
	List<OptionVo> queryBaseIndicatorsList(OptionParams category);

	/**
	 *	数据中心
	 * @return 统一响应
	 */
	List<OptionVo> dataCenter();

	/**
	 *	数据中心下的地市
	 * @return 统一响应
	 */
	List<OptionVo> getCityAreaByDataCenterId(Integer dataCenterId);

	/**
	 *	查询系统所属的域
	 * @return 统一响应
	 */
	List<OptionVo> getSystemDomain();

	/**
	 *	原始数据规则名称
	 * @return 统一响应
	 */
	List<OptionVo> queryRuleNameSelect();

	/**
	 *	获取协议名称
	 * @return
	 */
	List<OptionVo> protocol();

	/**
	 *	指标单位
	 * @return 统一响应
	 */
	List<OptionVo> indicatorUnit();

	/**
	 * 通过系统id查询端类型
	 */
	List<OptionVo> getSegmentTypeNameBySegmentId(Integer systemId);



	/**
	 * 查询专属指标同步网端下拉项
	 * @param params 业务服务资源接口请求对象
	 * @return 通用返回对象
	 */
	R queryIndicatorSyncSegmentOptions(BusinessServerResourceParams params);

	/**
	 * 查询专属指标同步系统下拉项
	 * @param params 业务服务资源接口请求对象
	 * @return 通用返回对象
	 */
	R queryIndicatorSyncSystemOptions(BusinessServerResourceParams params);

	/**
	 * 查询专属指标同步业务下拉项
	 * @param params 业务服务资源接口请求对象
	 * @return 通用返回对象
	 */
	R queryIndicatorSyncBusinessOptions(BusinessServerResourceParams params);
}
